
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.brain.cont.view.mbean;

import com.brain.cont.dto.AsientoDetaDto;
import com.brain.cont.dto.AsientoDto;
import com.brain.cont.dto.Formato0501Dto;
import com.brain.cont.manager.AsientoDetaManager;
import com.brain.cont.manager.AsientoOperacionDetaManager;
import com.brain.cont.manager.Formato0501Manager;
import com.brain.cont.manager.PlanContableDetaManager;
import com.brain.cont.manager.ReporteContManager;
import com.brain.cont.view.util.ConstantesCont;
import com.brain.core.common.UtilCore;
import com.brain.core.dto.ParametroDto;
import com.brain.core.exception.DAOException;
import com.brain.core.manager.BitacoraManager;
import com.brain.core.manager.ParametroManager;
import com.brain.core.view.mbean.*;
import com.brain.core.manager.RecursosManager;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;

import javax.annotation.Resource;
import javax.faces.model.SelectItem;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

/**
 *
 * @author J. Verde
 */
@Controller("reporteContMBean")
@Scope("session")
public class ReporteContMBean extends GenericMBean implements Serializable {

    private static Logger logger = Logger.getLogger(ReporteContMBean.class);
    @Resource
    private RecursosManager recursosManager;
    @Resource
    private ReporteContManager manager;
    
    @Resource
    private AsientoDetaManager managerDeta;
    
    @Resource
    private BitacoraManager managerBitacora;
    
    @Resource
    private ParametroManager managerParametro;
   
    @Resource
    private AsientoDetaManager asientoDetaManager;
    
    @Resource
    private AsientoOperacionDetaManager managerAsientoOperacionDeta;
    
    @Resource
    PlanContableDetaManager planContableDetaManager;
    
    private List<AsientoDto> lista;
    private AsientoDto dto;
    private AsientoDetaDto detaDto;
    private AsientoDto dtoFiltro;
    private String keyTitulo = "key.asiento.titulo";
    private String keyTituloAsientoDeta = "key.asiento.deta.titulo";
    
    private List<ParametroDto> siAnos;
    private List<ParametroDto> siMeses;
    private List<ParametroDto> siOrigenes;
    private List<ParametroDto> siEstados;
    
    private List<ParametroDto> siAnosFiltro;
    private List<ParametroDto> siMesesFiltro;
    private List<ParametroDto> siOrigenesFiltro;
    private List<ParametroDto> siEstadosFiltro;
    private SelectItem[] siTipos;
    
    @Resource
    private Formato0501Manager formato0501Manager;
    
    private List<Formato0501Dto> listaFormato0501;
    
    //    
    @Autowired
    private ApplicationMBean applicationMBean;
    @Autowired
    private SessionMBean sessionMBean;

    public ReporteContMBean() {
        this.dtoFiltro = null;
        this.dto = null;
    }

    public String iniciar() {
        this.dtoFiltro = new AsientoDto();        
        this.dtoFiltro.setAnoDto(sessionMBean.getAnoContableDto());
        this.dtoFiltro.setMesDto(sessionMBean.getMesContableDto());
        this.dtoFiltro.setFecha(UtilCore.Fecha.obtenerFechaActualDate());
        this.lista = new ArrayList<AsientoDto>();
        return manager.getUrlLista();
    }
    
    public String iniciarFormato0501() {
        this.dtoFiltro = new AsientoDto();        
        this.dtoFiltro.setAnoDto(sessionMBean.getAnoContableDto());
        this.dtoFiltro.setMesDto(sessionMBean.getMesContableDto());
        this.dtoFiltro.setFecha(UtilCore.Fecha.obtenerFechaActualDate());
        this.listaFormato0501 = new ArrayList<Formato0501Dto>();
        return formato0501Manager.getUrlLista();
    }

    
    public void buscar() {
        try {
            lista = manager.buscar(dtoFiltro);
        } catch (DAOException ex) {
            logger.error(ex);
        }
    }   
    
    public String genFormato0501() {
        formato0501Manager.generarData(dtoFiltro.getAnoDto().getId(), dtoFiltro.getMesDto().getId());
        try {
            listaFormato0501 = formato0501Manager.buscar(new Formato0501Dto());
        } catch (DAOException ex) {
            listaFormato0501 = new ArrayList<Formato0501Dto>();
            recursosManager.showError(ex.getMessage());
        }
        return formato0501Manager.getUrlLista();
    }
    
    public void genExcelFormato0501() {
        genFormato0501();
        formato0501Manager.generarExcel(listaFormato0501, dtoFiltro.getMesDto().getDescripcion()+"-"+dtoFiltro.getAnoDto().getDescripcion(), dtoFiltro.getFecha());
    }
    
    public void genTextFormato0501() {
        genFormato0501();
        formato0501Manager.generarTrama(listaFormato0501, dtoFiltro.getMesDto().getDescripcion()+"-"+dtoFiltro.getAnoDto().getDescripcion(), dtoFiltro.getFecha());
    }


    public List<AsientoDto> getLista() {
        return lista;
    }

    public void setLista(List<AsientoDto> lista) {
        this.lista = lista;
    }

    public AsientoDto getDto() {
        return dto;
    }

    public void setDto(AsientoDto dto) {
        this.dto = dto;
    }

    public AsientoDto getDtoFiltro() {
        return dtoFiltro;
    }

    public void setDtoFiltro(AsientoDto dtoFiltro) {
        this.dtoFiltro = dtoFiltro;
    }

    public String getKeyTitulo() {
        return keyTitulo;
    }

    public void setKeyTitulo(String keyTitulo) {
        this.keyTitulo = keyTitulo;
    }

    public ApplicationMBean getApplicationMBean() {
        return applicationMBean;
    }

    public void setApplicationMBean(ApplicationMBean applicationMBean) {
        this.applicationMBean = applicationMBean;
    }

    public SessionMBean getSessionMBean() {
        return sessionMBean;
    }

    public void setSessionMBean(SessionMBean sessionMBean) {
        this.sessionMBean = sessionMBean;
    }

    public AsientoDetaManager getManagerDeta() {
        return managerDeta;
    }

    public void setManagerDeta(AsientoDetaManager managerDeta) {
        this.managerDeta = managerDeta;
    }

    public BitacoraManager getManagerBitacora() {
        return managerBitacora;
    }

    public void setManagerBitacora(BitacoraManager managerBitacora) {
        this.managerBitacora = managerBitacora;
    }

    public AsientoDetaManager getAsientoDetaManager() {
        return asientoDetaManager;
    }

    public void setAsientoDetaManager(AsientoDetaManager asientoDetaManager) {
        this.asientoDetaManager = asientoDetaManager;
    }

    public AsientoDetaDto getDetaDto() {
        return detaDto;
    }

    public void setDetaDto(AsientoDetaDto detaDto) {
        this.detaDto = detaDto;
    }

    public String getKeyTituloAsientoDeta() {
        return keyTituloAsientoDeta;
    }

    public void setKeyTituloAsientoDeta(String keyTituloAsientoDeta) {
        this.keyTituloAsientoDeta = keyTituloAsientoDeta;
    }

    public List<ParametroDto> getSiAnos() {
        return this.recursosManager.obtenerParametrosActivosPorCatalogoSistema(ConstantesCont.CatalogoParametro.CONTA_ANIOS_TRABAJO);
    }

    public void setSiAnos(List<ParametroDto> siAnos) {
        this.siAnos = siAnos;
    }

    public List<ParametroDto> getSiMeses() {
        return this.recursosManager.obtenerParametrosActivosPorCatalogoSistema(ConstantesCont.CatalogoParametro.CONTA_MESES_TRABAJO);
    }

    public void setSiMeses(List<ParametroDto> siMeses) {
        this.siMeses = siMeses;
    }

    public List<ParametroDto> getSiOrigenes() {
        return this.recursosManager.obtenerParametrosActivosPorCatalogoSistema(ConstantesCont.CatalogoParametro.CONTA_ORIGENES);
    }

    public void setSiOrigenes(List<ParametroDto> siOrigenes) {
        this.siOrigenes = siOrigenes;
    }

    public List<ParametroDto> getSiAnosFiltro() {
        return this.recursosManager.obtenerParametrosActivosPorCatalogoSistemaAdd(ConstantesCont.CatalogoParametro.CONTA_ANIOS_TRABAJO, com.brain.core.view.util.ConstantesCore.Parametro.TODOS);
    }

    public void setSiAnosFiltro(List<ParametroDto> siAnosFiltro) {
        this.siAnosFiltro = siAnosFiltro;
    }

    public List<ParametroDto> getSiMesesFiltro() {
        return this.recursosManager.obtenerParametrosActivosPorCatalogoSistemaAdd(ConstantesCont.CatalogoParametro.CONTA_MESES_TRABAJO, com.brain.core.view.util.ConstantesCore.Parametro.TODOS);
    }

    public void setSiMesesFiltro(List<ParametroDto> siMesesFiltro) {
        this.siMesesFiltro = siMesesFiltro;
    }

    public List<ParametroDto> getSiOrigenesFiltro() {
       return this.recursosManager.obtenerParametrosActivosPorCatalogoSistemaAdd(ConstantesCont.CatalogoParametro.CONTA_ORIGENES, com.brain.core.view.util.ConstantesCore.Parametro.TODOS);
    }

    public void setSiOrigenesFiltro(List<ParametroDto> siOrigenesFiltro) {
        this.siOrigenesFiltro = siOrigenesFiltro;
    }
    public SelectItem[] getSiTipos() {
        return managerAsientoOperacionDeta.siTipos();
    }

    public void setSiTipos(SelectItem[] siTipos) {
        this.siTipos = siTipos;
    }

    public ParametroManager getManagerParametro() {
        return managerParametro;
    }

    public void setManagerParametro(ParametroManager managerParametro) {
        this.managerParametro = managerParametro;
    }

    public AsientoOperacionDetaManager getManagerAsientoOperacionDeta() {
        return managerAsientoOperacionDeta;
    }

    public void setManagerAsientoOperacionDeta(AsientoOperacionDetaManager managerAsientoOperacionDeta) {
        this.managerAsientoOperacionDeta = managerAsientoOperacionDeta;
    }

    public PlanContableDetaManager getPlanContableDetaManager() {
        return planContableDetaManager;
    }

    public void setPlanContableDetaManager(PlanContableDetaManager planContableDetaManager) {
        this.planContableDetaManager = planContableDetaManager;
    }

   

    public List<ParametroDto> getSiEstados() {
        return this.recursosManager.obtenerParametrosActivosPorCatalogoSistema(ConstantesCont.CatalogoParametro.CONTA_ESTADOS);
    }

    public void setSiEstados(List<ParametroDto> siEstados) {
        this.siEstados = siEstados;
    }

    public List<ParametroDto> getSiEstadosFiltro() {
        return this.recursosManager.obtenerParametrosActivosPorCatalogoSistemaAdd(ConstantesCont.CatalogoParametro.CONTA_ESTADOS, com.brain.core.view.util.ConstantesCore.Parametro.TODOS);
    }

    public void setSiEstadosFiltro(List<ParametroDto> siEstadosFiltro) {
        this.siEstadosFiltro = siEstadosFiltro;
    }
    
    public void imprimirLibroDiario() {
        this.manager.imprimirLibroDiario(this.dtoFiltro);
    }

    public List<Formato0501Dto> getListaFormato0501() {
        return listaFormato0501;
    }

    public void setListaFormato0501(List<Formato0501Dto> listaFormato0501) {
        this.listaFormato0501 = listaFormato0501;
    }

    
}
